﻿// ***********************************************************************
// Assembly         : Delta_entidad
// Author           : Juan Alberto Cerino Gomez
// Created          : 04-12-2013
//
// Last Modified By : Juan Alberto Cerino Gomez
// Last Modified On : 06-02-2013
// ***********************************************************************
// <copyright file="AttEntidad.cs" company="Delta Bussines">
//     Copyright (c) 2013  Delta Bussines. All rights reserved.
// </copyright>
// <summary></summary>
// ***********************************************************************
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Delta_util.Estaticos;

namespace Delta_entidad.Atributos
{
    /// <summary>
    /// Este atributo se coloca en la declaración de la clase,  permite configurar el comportamiento del componente en el Delta Grid.
    /// </summary>
    [Serializable()]
    [AttributeUsage(AttributeTargets.Class, Inherited = false, AllowMultiple = false)]
    public class AttEntidad : System.Attribute
    {

        /// <summary>
        /// Variable que guarda el nombre de la tabla a la cual representa la entidad.
        /// </summary>
        private string _tablaBase;
        /// <summary>
        /// Variable que guarda las operaciones permitidas para esta entidad en el Delta Grid.
        /// </summary>
        private Enumerados.TIPO_OPERACION_GRID[] _operaciones;
        /// <summary>
        /// Variable que guarda los campos que son llaves en la tabla.
        /// </summary>
        private string _keys;
        /// <summary>
        /// Variable logica que indica si la entidad maneja campos dinamicos.
        /// </summary>
        private bool _manejarDataUsers = false;
        /// <summary>
        /// Variable entera que indica el numero de registros que se muestran por pagina en el Grid View.
        /// </summary>
        private int _registros = 0;
        /// <summary>
        /// Obtiene o establece el nombre de la tabla a la cual representa esta entidad.
        /// </summary>
        /// <value>Devuelve el nombre de la tabla.</value>
        public string TablaBase { get { return _tablaBase; } set { _tablaBase = value; } }
        /// <summary>
        /// Obtiene o establece el listado de los campos que forman parte de la llave primaria de la entidad, son separados por coma.
        /// </summary>
        /// <value>Listado de campos claves.</value>
        public string keys { get { return _keys; } set { _keys = value; } }
        /// <summary>
        /// Obtiene o establece las operaciones permitidas en el componente Delta Grid.
        /// </summary>
        /// <value>Operaciones permitidas.</value>
        public Enumerados.TIPO_OPERACION_GRID[] operaciones { get { return _operaciones; } set { _operaciones = value; } }
        /// <summary>
        /// Variable que indica si se permite guardar la lista de registros del Delta Grid en cache, o se debe obtener los datos en cada postback realizado.
        /// </summary>
        private bool _guardarListaEnCache = true;
        /// <summary>
        /// Obtiene o establece el numero de registros que se permiten por página en el Grid View.
        /// </summary>
        /// <value>Numero de registros por página.</value>
        public int registros
        {
            get { return _registros; }
            set { _registros = value; }
        }
        /// <summary>
        /// Obtiene o establece el valor que indica si se permite guardar la lista de registros del Delta Grid en cache, o se debe obtener los datos en cada postback realizado.
        /// </summary>
        /// <value>Valor que indica si se guardan los datos en la memoria.</value>
        public bool guardarListaEnCache {
            get { return _guardarListaEnCache; }
            set { _guardarListaEnCache = value; }
        }

        /// <summary>
        /// Obtiene o establece el valor que indica si se usa UpdatePanel en el editor de registros, se recomienda no usar UpdatePanel cuando algun campo de la entidad use un editor de tipo FileUpload, 
        /// ya que este control no trabaja correctamente con el UpdatePanel.
        /// </summary>
        /// <value>Valor que indica si se usa updatePanel en el panel de edición.</value>
        public bool usarUpdatePanelEdicion
        {
            get;
            set;
        }
        /// <summary>
        /// Obtiene o estable el valor que indica si la entidad permite campos dinamicos.
        /// </summary>
        /// <value>Valor que indica si la entidad maneja campos dinamicos.</value>
        public bool manejarDataUsers
        {
            get { return _manejarDataUsers; }
            set { _manejarDataUsers = value; }
        }

        /// <summary>
        /// Constructor de la clase.
        /// </summary>
        /// <param name="Tabla">Nombre de la tabla a la cual representa esta entidad.</param>
        /// <param name="CamposPrimarios">Listado de los campos que forman parte de la llave primaria de la entidad, son separados por coma.</param>
        /// <param name="ManejarDatosDinamicos">Indica si la entidad permite campos dinamicos.</param>
        /// <param name="RegistrosPorPagina">Numero de registros por pagina del GridView, enviar 0 si no desea mostrar paginación.</param>
        /// <param name="GuardarListaEnCache">Indica si se permite guardar la lista de registros del Delta Grid en cache(true), o se debe obtener los datos en cada postback realizado.</param>
        /// <param name="UpdatePanelEnEdicion">Indica si se usa UpdatePanel en el editor de registros, se recomienda no usar UpdatePanel cuando algun campo de la entidad use un editor de tipo FileUpload, ya que este control no trabaja correctamente con el UpdatePanel.</param>
        /// <param name="OperacionesPermitidas">Indica las operaciones permitidas en el componente Delta Grid.</param>
        public AttEntidad(string Tabla, string CamposPrimarios, bool ManejarDatosDinamicos, int RegistrosPorPagina = 0,
            bool GuardarListaEnCache=true,bool UpdatePanelEnEdicion=true, params Enumerados.TIPO_OPERACION_GRID[] OperacionesPermitidas)
        {
            guardarListaEnCache = GuardarListaEnCache;
            TablaBase = Tabla;
            registros = RegistrosPorPagina;
            keys = CamposPrimarios;
            operaciones = OperacionesPermitidas;
            manejarDataUsers = ManejarDatosDinamicos;
            usarUpdatePanelEdicion = UpdatePanelEnEdicion;
        }
    }
}
